1968F - Equal XOR Segments - CodeForces Solution


binary search data structures

Please click on ads to support us..

Python Code:

from collections import defaultdict
from bisect import *

def solve():
    n, q = map(int, input().split())
    a = [int(i) for i in input().split()]

    pre = [0] * (n + 1)
    for i in range(n):
        pre[i + 1] = pre[i] ^ a[i]

        lookup = defaultdict(list)
    for i, x in enumerate(pre):
        lookup[x].append(i)

    for _ in range(q):
        l, r = map(int, input().split())
        left = lookup[pre[r]][bisect_left(lookup[pre[r]], l)]
        right = lookup[pre[l - 1]][bisect_left(lookup[pre[l - 1]], r + 1) - 1]
        print("YES" if left <= right else "NO")
    print()

for _ in range(int(input())):
    solve()


Comments

Submit
0 Comments
More Questions

1143B - Nirvana
1285A - Mezo Playing Zoma
919B - Perfect Number
894A - QAQ
1551A - Polycarp and Coins
313A - Ilya and Bank Account
1469A - Regular Bracket Sequence
919C - Seat Arrangements
1634A - Reverse and Concatenate
1619C - Wrong Addition
1437A - Marketing Scheme
1473B - String LCM
1374A - Required Remainder
1265E - Beautiful Mirrors
1296A - Array with Odd Sum
1385A - Three Pairwise Maximums
911A - Nearest Minimums
102B - Sum of Digits
707A - Brain's Photos
1331B - Limericks
305B - Continued Fractions
1165B - Polycarp Training
1646C - Factorials and Powers of Two
596A - Wilbur and Swimming Pool
1462B - Last Year's Substring
1608B - Build the Permutation
1505A - Is it rated - 2
169A - Chores
765A - Neverending competitions
1303A - Erasing Zeroes